<?php
namespace mes;
/**
 * RSA加密工具类
 *
 * Class RSAUtil
 */
class RSAUtil {

    /**
     * 创建RSA加密签名
     * @param string $content
     * @param string $priKey
     * @return mixed
     */
    public static function createSign($content, $priKey){
        //转换成PrivateKey格式
        $priKey = self::convertPrivateKey($priKey);

        //获取私钥内容
        $openssl_private_key =  openssl_get_privatekey($priKey);

        //对数据进行PKCS1签名   签名还有MD5,SHA,RMD根据自己实例代码修改
        openssl_sign($content, $signature, $openssl_private_key, OPENSSL_ALGO_MD5);

        //释放资源
        openssl_free_key($openssl_private_key);

        //对签名进行Base64编码，变为可读的字符串
        $sign = base64_encode($signature);
        if (empty($sign)) {
            die("验名失败");
        }

        return $sign;
    }

    /**
     * 转换PrivateKey
     * @param string $priKey
     * @return string
     */
    private static function convertPrivateKey($priKey) {
        //判断是否传入私钥内容
        $private_key_string = !empty($priKey) ? $priKey : '';
        //64位换行私钥内容
        $private_key_string = chunk_split($private_key_string, 64, "\r\n");
        //私钥头部
        $private_key_header = "-----BEGIN RSA PRIVATE KEY-----\r\n";
        //私钥尾部
        $private_key_footer = "-----END RSA PRIVATE KEY-----";
        //完整私钥拼接
        $private_key_string = $private_key_header.$private_key_string.$private_key_footer;
        return $private_key_string;
    }

}